Flash memory cells are programmed by trapping electrons on a floating gate, which increases the threshold voltage of the memory cells to a level corresponding to a desired program level. Data is subsequently read from the flash memory cells by applying read level voltages to the flash memory cells to determine the respective program levels to which the flash memory cells were programmed. As flash memory systems age, distributions of the flash memory cells within the different program levels may widen and shift relative to the read level voltages used to read the flash memory cells. These changes to the distributions may increase read error rates and possibly result in the loss of data.